home *** CD-ROM | disk | FTP | other *** search
/ BMUG Revelations / BMUG Revelations.toast / Programming / Programming Languages / UCB Logo 3.0 / CSLS / docsetup < prev    next >
Text File  |  1992-09-04  |  22KB  |  712 lines

  1. TO MATCH!
  2. IF EMPTYP :SEN [OP "FALSE]
  3. IF NOT TRY.PRED [OP "FALSE]
  4. MAKE :SPECIAL.VAR FIRST :SEN
  5. OP MATCH BF :PAT BF :SEN
  6. END
  7.  
  8. TO MATCH#
  9. MAKE :SPECIAL.VAR []
  10. OP #TEST #GATHER :SEN
  11. END
  12.  
  13. TO #GATHER :SEN
  14. IF EMPTYP :SEN [OP :SEN]
  15. IF NOT TRY.PRED [OP :SEN]
  16. MAKE :SPECIAL.VAR LPUT FIRST :SEN THING :SPECIAL.VAR
  17. OP #GATHER BF :SEN
  18. END
  19.  
  20. TO #TEST :SEN
  21. IF MATCH BF :PAT :SEN [OP "TRUE]
  22. IF EMPTYP THING :SPECIAL.VAR [OP "FALSE]
  23. OP #TEST2 FPUT LAST THING :SPECIAL.VAR :SEN
  24. END
  25.  
  26. TO #TEST2 :SEN
  27. MAKE :SPECIAL.VAR BL THING :SPECIAL.VAR
  28. OP #TEST :SEN
  29. END
  30.  
  31. TO MATCH&
  32. OP &TEST MATCH#
  33. END
  34.  
  35. TO &TEST :TF
  36. IF EMPTYP THING :SPECIAL.VAR [OP "FALSE]
  37. OP :TF
  38. END
  39.  
  40. TO MATCH?
  41. MAKE :SPECIAL.VAR []
  42. IF EMPTYP :SEN [OP MATCH BF :PAT :SEN]
  43. IF NOT TRY.PRED [OP MATCH BF :PAT :SEN]
  44. MAKE :SPECIAL.VAR FIRST :SEN
  45. IF MATCH BF :PAT BF :SEN [OP "TRUE]
  46. MAKE :SPECIAL.VAR []
  47. OP MATCH BF :PAT :SEN
  48. END
  49.  
  50. TO MATCH@
  51. MAKE :SPECIAL.VAR :SEN
  52. OP @TEST []
  53. END
  54.  
  55. TO @TEST :SEN
  56. IF @TRY.PRED [IF MATCH BF :PAT :SEN [OP "TRUE]]
  57. IF EMPTYP THING :SPECIAL.VAR [OP "FALSE]
  58. OP @TEST2 FPUT LAST THING :SPECIAL.VAR :SEN
  59. END
  60.  
  61. TO @TEST2 :SEN
  62. MAKE :SPECIAL.VAR BL THING :SPECIAL.VAR
  63. OP @TEST :SEN
  64. END
  65.  
  66. TO @TRY.PRED
  67. IF LISTP :SPECIAL.PRED [OP MATCH :SPECIAL.PRED THING :SPECIAL.VAR]
  68. OP RUN LIST :SPECIAL.PRED THING :SPECIAL.VAR
  69. END
  70.  
  71. TO ADDMEMR :WORD :PATTERN :RESULTS
  72. LOCAL "PROPNAME
  73. MAKE "PROPNAME GENSYM
  74. PPROP :WORD "MEMR ( SE GPROP :WORD "MEMR LIST :PATTERN :PROPNAME )
  75. PPROP :WORD :PROPNAME :RESULTS
  76. END
  77.  
  78. TO ADDPUNCT :STUFF :CHAR
  79. IF WORDP :STUFF [OUTPUT WORD :STUFF :CHAR]
  80. IF EMPTYP :STUFF [OUTPUT :CHAR]
  81. OUTPUT SE BL :STUFF WORD LAST :STUFF :CHAR
  82. END
  83.  
  84. TO ADDRULE :WORD :PATTERN :RESULTS
  85. LOCAL "PROPNAME
  86. MAKE "PROPNAME GENSYM
  87. PPROP :WORD "RULES ( SE GPROP :WORD "RULES LIST :PATTERN :PROPNAME )
  88. PPROP :WORD :PROPNAME :RESULTS
  89. END
  90.  
  91. TO ALWAYS :X
  92. OP "TRUE
  93. END
  94.  
  95. TO ANALYZE :SENTENCE :KEYWORDS
  96. LOCAL [RULES KEYWORD]
  97. IF EMPTYP :KEYWORDS [NORULES STOP]
  98. MAKE "KEYWORD FIRST :KEYWORDS
  99. MAKE "RULES GPROP :KEYWORD "RULES
  100. IF WORDP FIRST :RULES ~
  101.    [MAKE "KEYWORD FIRST :RULES MAKE "RULES GPROP :KEYWORD "RULES]
  102. CHECKRULES :KEYWORD :RULES
  103. END
  104.  
  105. TO ANYOF :SEN
  106. OP ANYOF1 :SEN :IN.LIST
  107. END
  108.  
  109. TO ANYOF1 :SEN :PATS
  110. IF EMPTYP :PATS [OP "FALSE]
  111. IF MATCH FIRST :PATS :SEN [OP "TRUE]
  112. OP ANYOF1 :SEN BF :PATS
  113. END
  114.  
  115. TO BELIEFP :WORD
  116. OUTPUT NOT EMPTYP GPROP :WORD "BELIEF
  117. END
  118.  
  119. TO CHECKPRIORITY :WORD
  120. LOCAL "PRIORITY
  121. MAKE "PRIORITY GPROP :WORD "PRIORITY
  122. IF EMPTYP :PRIORITY [STOP]
  123. IF EMPTYP :KEYWORDS [MAKE "KEYWORDS ( LIST :WORD ) STOP]
  124. IFELSE :PRIORITY > ( GPROP FIRST :KEYWORDS "PRIORITY ) ~
  125.        [MAKE "KEYWORDS FPUT :WORD :KEYWORDS] ~
  126.        [MAKE "KEYWORDS LPUT :WORD :KEYWORDS]
  127. END
  128.  
  129. TO CHECKRULES :KEYWORD :RULES
  130. IF NOT MATCH FIRST :RULES :SENTENCE ~
  131.    [CHECKRULES :KEYWORD BF BF :RULES STOP]
  132. DORULE FIRST BF :RULES
  133. END
  134.  
  135. TO DOCTOR
  136. LOCAL [TEXT SENTENCE STUFF A B C RULES KEYWORDS]
  137. MAKE "MEMORY []
  138. PR [HELLO, I AM THE DOCTOR. WHAT CAN I DO FOR YOU?]
  139. PR [PLEASE END YOUR REMARKS WITH AN EMPTY LINE.]
  140. PR []
  141. LOOP
  142. END
  143.  
  144. TO DORULE :RULE
  145. LOCAL "PRINT
  146. MAKE "PRINT FIRST GPROP :KEYWORD :RULE
  147. PPROP :KEYWORD :RULE LPUT :PRINT BF GPROP :KEYWORD :RULE
  148. IF EQUALP :PRINT "NEWKEY [ANALYZE :SENTENCE BF :KEYWORDS STOP]
  149. IF WORDP :PRINT [CHECKRULES :PRINT GPROP :PRINT "RULES STOP]
  150. IF EQUALP FIRST :PRINT "PRE ~
  151.    [ANALYZE RECONSTRUCT FIRST BF :PRINT BF BF :PRINT STOP]
  152. PRINT RECONSTRUCT :PRINT
  153. MEMORY :KEYWORD :SENTENCE
  154. END
  155.  
  156. TO FAMILYP :WORD
  157. OUTPUT NOT EMPTYP GPROP :WORD "FAMILY
  158. END
  159.  
  160. TO GETSENTENCE :TEXT
  161. MAKE "KEYWORDS []
  162. OUTPUT GETSENTENCE1 :TEXT []
  163. END
  164.  
  165. TO GETSENTENCE1 :TEXT :OUT
  166. IF EMPTYP :TEXT [OUTPUT :OUT]
  167. IF EQUALP FIRST :TEXT ". ~
  168.    [IFELSE EMPTYP :KEYWORDS ~
  169.            [OUTPUT GETSENTENCE1 BF :TEXT []] [OUTPUT :OUT]]
  170. CHECKPRIORITY FIRST :TEXT
  171. OUTPUT GETSENTENCE1 BF :TEXT SE :OUT TRANSLATE FIRST :TEXT
  172. END
  173.  
  174. TO GETSTUFF :STUFF
  175. LOCAL "LINE
  176. MAKE "LINE RL
  177. IF EMPTYP :LINE [OP :STUFF]
  178. OP GETSTUFF SE :STUFF :LINE
  179. END
  180.  
  181. TO IN :WORD
  182. OP MEMBERP :WORD :IN.LIST
  183. END
  184.  
  185. TO LASTRESORT
  186. PRINT FIRST :LASTRESORT
  187. MAKE "LASTRESORT LPUT FIRST :LASTRESORT BF :LASTRESORT
  188. END
  189.  
  190. TO LOOP
  191. MAKE "TEXT TOKENIZE GETSTUFF []
  192. MAKE "SENTENCE GETSENTENCE :TEXT
  193. ANALYZE :SENTENCE :KEYWORDS
  194. PRINT []
  195. LOOP
  196. END
  197.  
  198. TO MATCH :PAT :SEN
  199. LOCAL [SPECIAL.VAR SPECIAL.PRED SPECIAL.BUFFER IN.LIST]
  200. IF OR WORDP :PAT WORDP :SEN [OP "FALSE]
  201. IF EMPTYP :PAT [OP EMPTYP :SEN]
  202. IF LISTP FIRST :PAT [OP SPECIAL FPUT "!: :PAT :SEN]
  203. IF MEMBERP FIRST FIRST :PAT [? # ! & @] [OP SPECIAL :PAT :SEN]
  204. IF EMPTYP :SEN [OP "FALSE]
  205. IF EQUALP FIRST :PAT FIRST :SEN [OP MATCH BF :PAT BF :SEN]
  206. OP "FALSE
  207. END
  208.  
  209. TO MEMORY :KEYWORD :SENTENCE
  210. LOCAL [RULES RULE NAME]
  211. MAKE "RULES GPROP :KEYWORD "MEMR
  212. IF EMPTYP :RULES [STOP]
  213. IF NOT MATCH FIRST :RULES :SENTENCE [STOP]
  214. MAKE "NAME LAST :RULES
  215. MAKE "RULES GPROP :KEYWORD :NAME
  216. MAKE "RULE FIRST :RULES
  217. PPROP :KEYWORD :NAME LPUT :RULE BF :RULES
  218. MAKE "MEMORY FPUT RECONSTRUCT :SENTENCE :MEMORY
  219. END
  220.  
  221. TO NORULES
  222. IFELSE :MEMFLAG [USEMEMORY] [LASTRESORT]
  223. MAKE "MEMFLAG NOT :MEMFLAG
  224. END
  225.  
  226. TO PARSE.SPECIAL :WORD :VAR
  227. IF EMPTYP :WORD [OP LIST :VAR "ALWAYS]
  228. IF EQUALP FIRST :WORD ": [OP LIST :VAR BF :WORD]
  229. OP PARSE.SPECIAL BF :WORD WORD :VAR FIRST :WORD
  230. END
  231.  
  232. TO QUOTED :THING
  233. IF LISTP :THING [OP :THING]
  234. OP WORD "" :THING
  235. END
  236.  
  237. TO RECONSTRUCT :SENTENCE
  238. IF EMPTYP :SENTENCE [OUTPUT []]
  239. IF NOT EQUALP ": FIRST FIRST :SENTENCE ~
  240.    [OUTPUT FPUT FIRST :SENTENCE RECONSTRUCT BF :SENTENCE]
  241. OUTPUT SE REWORD FIRST :SENTENCE RECONSTRUCT BF :SENTENCE
  242. END
  243.  
  244. TO REWORD :WORD
  245. IF MEMBERP LAST :WORD [. ? ,] [OUTPUT ADDPUNCT REWORD BL :WORD LAST :WORD]
  246. OUTPUT THING BF :WORD
  247. END
  248.  
  249. TO SET.IN
  250. MAKE "IN.LIST FIRST BF :PAT
  251. MAKE "PAT FPUT FIRST :PAT BF BF :PAT
  252. END
  253.  
  254. TO SET.SPECIAL :LIST
  255. MAKE "SPECIAL.VAR FIRST :LIST
  256. MAKE "SPECIAL.PRED LAST :LIST
  257. IF EMPTYP :SPECIAL.VAR [MAKE "SPECIAL.VAR "SPECIAL.BUFFER]
  258. IF MEMBERP :SPECIAL.PRED [IN ANYOF] [SET.IN]
  259. IF NOT EMPTYP :SPECIAL.PRED [STOP]
  260. MAKE "SPECIAL.PRED FIRST BF :PAT
  261. MAKE "PAT FPUT FIRST :PAT BF BF :PAT
  262. END
  263.  
  264. TO SETUP
  265. MAKE "MEMFLAG "FALSE
  266. MAKE "LASTRESORT [[I AM NOT SURE I UNDERSTAND YOU FULLY.] ~
  267.   [PLEASE GO ON.] ~
  268.   [WHAT DOES THAT SUGGEST TO YOU?] ~
  269.   [DO YOU FEEL STRONGLY ABOUT DISCUSSING SUCH THINGS?]]
  270. SETUP1
  271. SETUP2
  272. SETUP3
  273. SETUP4
  274. ERASE [SETUP1 SETUP2 SETUP3 SETUP4 ADDRULE ADDMEMR SETUP]
  275. END
  276.  
  277. TO SETUP1
  278. PPROP "SORRY "PRIORITY 0
  279. ADDRULE "SORRY [#] ~
  280.   [[PLEASE DON'T APOLOGIZE.] ~
  281.    [APOLOGIES ARE NOT NECESSARY.] ~
  282.    [WHAT FEELINGS DO YOU HAVE WHEN YOU APOLOGIZE?] ~
  283.    [I'VE TOLD YOU THAT APOLOGIES ARE NOT REQUIRED.]]
  284. PPROP "DONT "TRANSLATION "DON'T
  285. PPROP "CANT "TRANSLATION "CAN'T
  286. PPROP "WONT "TRANSLATION "WON'T
  287. PPROP "REMEMBER "PRIORITY 5
  288. ADDRULE "REMEMBER ~
  289.   [# YOU REMEMBER #STUFF] ~
  290.   [[DO YOU OFTEN THINK OF :STUFF?] ~
  291.    [DOES THINKING OF :STUFF BRING ANYTHING ELSE TO MIND?] ~
  292.    [WHAT ELSE DO YOU REMEMBER?] ~
  293.    [WHY DO YOU REMEMBER :STUFF JUST NOW?] ~
  294.    [WHAT IN THE PRESENT SITUATION REMINDS YOU OF :STUFF?]]
  295. ADDRULE "REMEMBER [# DO I REMEMBER #STUFF] ~
  296.   [[DID YOU THINK I WOULD FORGET :STUFF?] ~
  297.    [WHY DO YOU THINK I SHOULD RECALL :STUFF NOW?] ~
  298.    [WHAT ABOUT :STUFF?] WHAT [YOU MENTIONED :STUFF.]]
  299. ADDRULE "REMEMBER [#] [NEWKEY]
  300. PPROP "IF "PRIORITY 3
  301. ADDRULE "IF [#A IF #B HAD #C] [[PRE [:A IF :B MIGHT HAVE :C] IF]]
  302. ADDRULE "IF [# IF #STUFF] ~
  303.   [[DO YOU THINK IT'S LIKELY THAT :STUFF?] ~
  304.    [DO YOU WISH THAT :STUFF?] ~
  305.    [WHAT DO YOU THINK ABOUT :STUFF?]]
  306. PPROP "DREAMED "PRIORITY 4
  307. ADDRULE "DREAMED [# YOU DREAMED #STUFF] ~
  308.   [[REALLY :STUFF?] ~
  309.    [HAVE YOU EVER FANTASIED :STUFF WHILE YOU WERE AWAKE?] ~
  310.    [HAVE YOU DREAMED :STUFF BEFORE?] DREAM NEWKEY]
  311. ADDRULE "DREAMED [#] [DREAM NEWKEY]
  312. PPROP "DREAMT "TRANSLATION "DREAMED
  313. PPROP "DREAMT "PRIORITY 4
  314. PPROP "DREAMT "RULES [DREAMED]
  315. PPROP "DREAM "PRIORITY 3
  316. ADDRULE "DREAM [#] ~
  317.   [[WHAT DOES THAT DREAM SUGGEST TO YOU?] ~
  318.    [DO YOU DREAM OFTEN?] ~
  319.    [WHAT PERSONS APPEAR IN YOUR DREAMS?] ~
  320.    [DON'T YOU BELIEVE THAT DREAM HAS SOMETHING TO DO WITH YOUR PROBLEM?] ~
  321.    [DO YOU EVER WISH YOU COULD FLEE FROM REALITY?] NEWKEY]
  322. PPROP "DREAMS "TRANSLATION "DREAM
  323. PPROP "DREAMS "PRIORITY 3
  324. PPROP "DREAMS "RULES [DREAM]
  325. PPROP "WHAT "PRIORITY 0
  326. ADDRULE "WHAT [!:IN [WHAT WHERE] #] [HOW]
  327. ADDRULE "WHAT [# !A:IN [WHAT WHERE] #B] ~
  328.   [[TELL ME ABOUT :A :B.] [:A :B?] ~
  329.    [DO YOU WANT ME TO TELL YOU :A :B?] [REALLY.] [I SEE.] NEWKEY]
  330. PPROP "ALIKE "PRIORITY 10
  331. PPROP "ALIKE "RULES [DIT]
  332. PPROP "SAME "PRIORITY 10
  333. PPROP "SAME "RULES [DIT]
  334. PPROP "CERTAINLY "PRIORITY 0
  335. PPROP "CERTAINLY "RULES [YES]
  336. PPROP "FEEL "BELIEF "TRUE
  337. PPROP "THINK "BELIEF "TRUE
  338. PPROP "BELIEVE "BELIEF "TRUE
  339. PPROP "WISH "BELIEF "TRUE
  340. PPROP "BET "BELIEF "TRUE
  341. ADDMEMR "MY [# YOUR &STUFF] ~
  342.   [[EARLIER YOU SAID YOUR :STUFF.] ~
  343.    [BUT YOUR :STUFF.] ~
  344.    [DOES THAT HAVE ANYTHING TO DO WITH YOUR STATEMENT ABOUT :STUFF?]]
  345. PPROP "PERHAPS "PRIORITY 0
  346. ADDRULE "PERHAPS [#] ~
  347.   [[YOU DON'T SEEM QUITE CERTAIN.] ~
  348.    [WHY THE UNCERTAIN TONE?] ~
  349.    [CAN'T YOU BE MORE POSITIVE?] ~
  350.    [YOU AREN'T SURE.] [DON'T YOU KNOW?]]
  351. PPROP "MAYBE "PRIORITY 0
  352. PPROP "MAYBE "RULES [PERHAPS]
  353. PPROP "NAME "PRIORITY 15
  354. ADDRULE "NAME [#] ~
  355.   [[I AM NOT INTERESTED IN NAMES.] ~
  356.    [I'VE TOLD YOU BEFORE I DON'T CARE ABOUT |NAMES;| PLEASE CONTINUE.]]
  357. PPROP "DEUTSCH "PRIORITY 0
  358. ADDRULE "DEUTSCH [#] [[I'M SORRY, I SPEAK ONLY ENGLISH.]]
  359. PPROP "FRANCAIS "PRIORITY 0
  360. PPROP "FRANCAIS "RULES [DEUTSCH]
  361. PPROP "SVENSKA "PRIORITY 0
  362. PPROP "SVENSKA "RULES [DEUTSCH]
  363. PPROP "ITALIANO "PRIORITY 0
  364. PPROP "ITALIANO "RULES [DEUTSCH]
  365. PPROP "ESPANOL "PRIORITY 0
  366. PPROP "ESPANOL "RULES [DEUTSCH]
  367. PPROP "HELLO "PRIORITY 0
  368. ADDRULE "HELLO [#] [[HOW DO YOU DO. PLEASE STATE YOUR PROBLEM.]]
  369. PPROP "COMPUTER "PRIORITY 50
  370. ADDRULE "COMPUTER [#] ~
  371.   [[DO COMPUTERS WORRY YOU?] ~
  372.    [WHY DO YOU MENTION COMPUTERS?] ~
  373.    [WHAT DO YOU THINK MACHINES HAVE TO DO WITH YOUR PROBLEM?] ~
  374.    [DON'T YOU THINK COMPUTERS CAN HELP PEOPLE?] ~
  375.    [WHAT ABOUT MACHINES WORRIES YOU?] ~
  376.    [WHAT DO YOU THINK ABOUT MACHINES?]]
  377. PPROP "MACHINE "PRIORITY 50
  378. PPROP "MACHINE "RULES [COMPUTER]
  379. PPROP "MACHINES "PRIORITY 50
  380. PPROP "MACHINES "RULES [COMPUTER]
  381. PPROP "COMPUTERS "PRIORITY 50
  382. PPROP "COMPUTERS "RULES [COMPUTER]
  383. PPROP "AM "PRIORITY 0
  384. PPROP "AM "TRANSLATION "ARE
  385. END
  386.  
  387. TO SETUP2
  388. ADDRULE "AM [# ARE YOU #STUFF] ~
  389.   [[DO YOU BELIEVE YOU ARE :STUFF?] ~
  390.    [WOULD YOU WANT TO BE :STUFF?] ~
  391.    [YOU WISH I WOULD TELL YOU YOU ARE :STUFF.] ~
  392.    [WHAT WOULD IT MEAN IF YOU WERE :STUFF?] HOW]
  393. ADDRULE "AM [#] [[WHY DO YOU SAY "AM"?] [I DON'T UNDERSTAND THAT.]]
  394. PPROP "ARE "PRIORITY 0
  395. ADDRULE "ARE [#A THERE ARE #B YOU #C] [[PRE [:A THERE ARE :B] ARE]]
  396. ADDRULE "ARE [# THERE ARE &STUFF] ~
  397.   [[WHAT MAKES YOU THINK THERE ARE :STUFF?] ~
  398.    [DO YOU USUALLY CONSIDER :STUFF?] ~
  399.    [DO YOU WISH THERE WERE :STUFF?]]
  400. ADDRULE "ARE [# ARE I #STUFF] ~
  401.   [[WHY ARE YOU INTERESTED IN WHETHER I AM :STUFF OR NOT?] ~
  402.    [WOULD YOU PREFER IF I WEREN'T :STUFF?] ~
  403.    [PERHAPS I AM :STUFF IN YOUR FANTASIES.] ~
  404.    [DO YOU SOMETIMES THINK I AM :STUFF?] HOW]
  405. ADDRULE "ARE [ARE #] [HOW]
  406. ADDRULE "ARE [# ARE #STUFF] ~
  407.   [[DID YOU THINK THEY MIGHT NOT BE :STUFF?] ~
  408.    [WOULD YOU LIKE IT IF THEY WERE NOT :STUFF?] ~
  409.    [WHAT IF THEY WERE NOT :STUFF?] [POSSIBLY THEY ARE :STUFF.]]
  410. PPROP "YOUR "PRIORITY 0
  411. PPROP "YOUR "TRANSLATION "MY
  412. ADDRULE "YOUR [# MY #STUFF] ~
  413.   [[WHY ARE YOU CONCERNED OVER MY :STUFF?] ~
  414.    [WHAT ABOUT YOUR OWN :STUFF?] ~
  415.    [ARE YOU WORRIED ABOUT SOMEONE ELSE'S :STUFF?] ~
  416.    [REALLY, MY :STUFF?]]
  417. PPROP "WAS "PRIORITY 2
  418. ADDRULE "WAS [# WAS YOU #STUFF] ~
  419.    [[WHAT IF YOU WERE :STUFF?] ~
  420.    [DO YOU THINK YOU WERE :STUFF?] ~
  421.    [WERE YOU :STUFF?] ~
  422.    [WHAT WOULD IT MEAN IF YOU WERE :STUFF?] ~
  423.    [WHAT DOES " :STUFF " SUGGEST TO YOU?] HOW]
  424. ADDRULE "WAS [# YOU WAS #STUFF] ~
  425.   [[WERE YOU REALLY?] ~
  426.    [WHY DO YOU TELL ME YOU WERE :STUFF NOW?] ~
  427.    [PERHAPS I ALREADY KNEW YOU WERE :STUFF.]]
  428. ADDRULE "WAS [# WAS I #STUFF] ~
  429.   [[WOULD YOU LIKE TO BELIEVE I WAS :STUFF?] ~
  430.    [WHAT SUGGESTS THAT I WAS :STUFF?] ~
  431.    [WHAT DO YOU THINK?] ~
  432.    [PERHAPS I WAS :STUFF.] ~
  433.    [WHAT IF I HAD BEEN :STUFF?]]
  434. ADDRULE "WAS [#] [NEWKEY]
  435. PPROP "WERE "PRIORITY 0
  436. PPROP "WERE "TRANSLATION "WAS
  437. PPROP "WERE "RULES [WAS]
  438. PPROP "ME "TRANSLATION "YOU
  439. PPROP "YOU'RE "PRIORITY 0
  440. PPROP "YOU'RE "TRANSLATION "I'M
  441. ADDRULE "YOU'RE [# I'M #STUFF] [[PRE [I ARE :STUFF] YOU]]
  442. PPROP "I'M "PRIORITY 0
  443. PPROP "I'M "TRANSLATION "YOU'RE
  444. ADDRULE "I'M [# YOU'RE #STUFF] [[PRE [YOU ARE :STUFF] I]]
  445. PPROP "MYSELF "TRANSLATION "YOURSELF
  446. PPROP "YOURSELF "TRANSLATION "MYSELF
  447. PPROP "MOTHER "FAMILY "TRUE
  448. PPROP "MOM "TRANSLATION "MOTHER
  449. PPROP "MOM "FAMILY "TRUE
  450. PPROP "MOMMY "TRANSLATION "MOTHER
  451. PPROP "MOMMY "FAMILY "TRUE
  452. PPROP "FATHER "FAMILY "TRUE
  453. PPROP "DAD "TRANSLATION "FATHER
  454. PPROP "DAD "FAMILY "TRUE
  455. PPROP "DADDY "TRANSLATION "FATHER
  456. PPROP "DADDY "FAMILY "TRUE
  457. PPROP "SISTER "FAMILY "TRUE
  458. PPROP "BROTHER "FAMILY "TRUE
  459. PPROP "HUSBAND "FAMILY "TRUE
  460. PPROP "WIFE "FAMILY "TRUE
  461. PPROP "CHILDREN "FAMILY "TRUE
  462. PPROP "I "PRIORITY 0
  463. PPROP "I "TRANSLATION "YOU
  464. ADDRULE "I [# YOU !:IN [WANT NEED] #STUFF] ~
  465.   [[WHAT WOULD IT MEAN TO YOU IF YOU GOT :STUFF?] ~
  466.    [WHY DO YOU WANT :STUFF?] ~
  467.    [SUPPOSE YOU GOT :STUFF SOON.] ~
  468.    [WHAT IF YOU NEVER GOT :STUFF?] ~
  469.    [WHAT WOULD GETTING :STUFF MEAN TO YOU?] ~
  470.    [YOU REALLY WANT :STUFF.] ~
  471.    [I SUSPECT YOU REALLY DON'T WANT :STUFF.]]
  472. ADDRULE "I [# YOU ARE # !STUFF:IN [SAD UNHAPPY DEPRESSED SICK] #] ~
  473.   [[I'M SORRY TO HEAR YOU ARE :STUFF.] ~
  474.    [DO YOU THINK COMING HERE WILL HELP YOU NOT TO BE :STUFF?] ~
  475.    [I'M SURE IT'S NOT PLEASANT TO BE :STUFF.] ~
  476.    [CAN YOU EXPLAIN WHAT MADE YOU :STUFF?] [PLEASE GO ON.]]
  477. ADDRULE "I [# YOU ARE # !STUFF:IN [HAPPY ELATED GLAD BETTER] #] ~
  478.   [[HOW HAVE I HELPED YOU TO BE :STUFF?] ~
  479.    [HAS YOUR TREATMENT MADE YOU :STUFF?] ~
  480.    [WHAT MAKES YOU :STUFF JUST NOW?] ~
  481.    [CAN YOU EXPLAIN WHY YOU ARE SUDDENLY :STUFF?] ~
  482.    [ARE YOU SURE?] [WHAT DO YOU MEAN BY :STUFF?]]
  483. ADDRULE "I [# YOU WAS #] [WAS]
  484. ADDRULE "I [# YOU !:BELIEFP YOU #STUFF] ~
  485.   [[DO YOU REALLY THINK SO?] ~
  486.    [BUT YOU ARE NOT SURE YOU :STUFF.] ~
  487.    [DO YOU REALLY DOUBT YOU :STUFF?]]
  488. ADDRULE "I [# YOU # !:BELIEFP # I #] [YOU]
  489. ADDRULE "I [# YOU ARE #STUFF] ~
  490.   [[IS IT BECAUSE YOU ARE :STUFF THAT YOU CAME TO ME?] ~
  491.    [HOW LONG HAVE YOU BEEN :STUFF?] ~
  492.    [DO YOU BELIEVE IT NORMAL TO BE :STUFF?] ~
  493.    [DO YOU ENJOY BEING :STUFF?]]
  494. ADDRULE "I [# YOU !:IN [CAN'T CANNOT] #STUFF] ~
  495.   [[HOW DO YOU KNOW YOU CAN'T :STUFF?] ~
  496.    [HAVE YOU TRIED?] [PERHAPS YOU COULD :STUFF NOW.] ~
  497.    [DO YOU REALLY WANT TO BE ABLE TO :STUFF?]]
  498. END
  499.  
  500. TO SETUP3
  501. ADDRULE "I [# YOU DON'T #STUFF] ~
  502.   [[DON'T YOU REALLY :STUFF?] [WHY DON'T YOU :STUFF?] ~
  503.    [DO YOU WISH TO BE ABLE TO :STUFF?] [DOES THAT TROUBLE YOU?]]
  504. ADDRULE "I [# YOU FEEL #STUFF] ~
  505.   [[TELL ME MORE ABOUT SUCH FEELINGS.] ~
  506.    [DO YOU OFTEN FEEL :STUFF?] [DO YOU ENJOY FEELING :STUFF?] ~
  507.    [OF WHAT DOES FEELING :STUFF REMIND YOU?]]
  508. ADDRULE "I [# YOU #STUFF I #] ~
  509.   [[PERHAPS IN YOUR FANTASY WE :STUFF EACH OTHER.] ~
  510.    [DO YOU WISH TO :STUFF ME?] ~
  511.    [YOU SEEM TO NEED TO :STUFF ME.] ~
  512.    [DO YOU :STUFF ANYONE ELSE?]]
  513. ADDRULE "I [#STUFF] ~
  514.   [[YOU SAY :STUFF.] [CAN YOU ELABORATE ON THAT?] ~
  515.    [DO YOU SAY :STUFF FOR SOME SPECIAL REASON?] ~
  516.    [THAT'S QUITE INTERESTING.]]
  517. PPROP "YOU "PRIORITY 0
  518. PPROP "YOU "TRANSLATION "I
  519. ADDRULE "YOU [# I REMIND YOU OF #] [DIT]
  520. ADDRULE "YOU [# I ARE # YOU #] [NEWKEY]
  521. ADDRULE "YOU [# I # ARE #STUFF] ~
  522.   [[WHAT MAKES YOU THINK I AM :STUFF?] ~
  523.    [DOES IT PLEASE YOU TO BELIEVE I AM :STUFF?] ~
  524.    [PERHAPS YOU WOULD LIKE TO BE :STUFF.] ~
  525.    [DO YOU SOMETIMES WISH YOU WERE :STUFF?]]
  526. ADDRULE "YOU [# I #STUFF YOU] ~
  527.   [[WHY DO YOU THINK I :STUFF YOU?] ~
  528.    [YOU LIKE TO THINK I :STUFF YOU, DON'T YOU?] ~
  529.    [WHAT MAKES YOU THINK I :STUFF YOU?] ~
  530.    [REALLY, I :STUFF YOU?] ~
  531.    [DO YOU WISH TO BELIEVE I :STUFF YOU?] ~
  532.    [SUPPOSE I DID :STUFF YOU. WHAT WOULD THAT MEAN?] ~
  533.    [DOES SOMEONE ELSE BELIEVE I :STUFF YOU?]]
  534. ADDRULE "YOU [# I &STUFF] ~
  535.   [[WE WERE DISCUSSING YOU, NOT ME.] ~
  536.    [OH, I :STUFF?] ~
  537.    [IS THIS REALLY RELEVANT TO YOUR PROBLEM?] ~
  538.    [PERHAPS I DO :STUFF.] ~
  539.    [ARE YOU GLAD TO KNOW I :STUFF?] ~
  540.    [DO YOU :STUFF?] [WHAT ARE YOUR FEELINGS NOW?]]
  541. ADDRULE "YOU [#] [NEWKEY]
  542. PPROP "WE "TRANSLATION "YOU
  543. PPROP "WE "PRIORITY 0
  544. PPROP "WE "RULES [I]
  545. PPROP "XXYYZZ "PRIORITY 0
  546. ADDRULE "XXYYZZ [#] ~
  547.   [[YOU'RE BEING SOMEWHAT SHORT WITH ME.] ~
  548.    [YOU DON'T SEEM VERY TALKATIVE TODAY.] ~
  549.    [PERHAPS YOU'D RATHER TALK ABOUT SOMETHING ELSE.] ~
  550.    [ARE YOU USING MONOSYLLABLES FOR SOME REASON?] NEWKEY]
  551. PPROP "YES "PRIORITY 0
  552. ADDRULE "YES [YES] [XXYYZZ [PRE [X YES] YES]]
  553. ADDRULE "YES [#] ~
  554.   [[YOU SEEM QUITE POSITIVE.] ~
  555.    [YOU ARE SURE.] [I SEE.] [I UNDERSTAND.] NEWKEY]
  556. PPROP "NO "PRIORITY 0
  557. ADDRULE "NO [NO] [XXYYZZ [PRE [X NO] NO]]
  558. ADDRULE "NO [#] ~
  559.   [[ARE YOU SAYING "NO" JUST TO BE NEGATIVE?] ~
  560.    [YOU ARE BEING A BIT NEGATIVE.] [WHY NOT?] [WHY "NO"?] NEWKEY]
  561. PPROP "MY "PRIORITY 2
  562. PPROP "MY "TRANSLATION "YOUR
  563. ADDRULE "MY [# YOUR # !A:FAMILYP #B] ~
  564.   [[TELL ME MORE ABOUT YOUR FAMILY.] ~
  565.    [WHO ELSE IN YOUR FAMILY :B?] [YOUR :A?] ~
  566.    [WHAT ELSE COMES TO MIND WHEN YOU THINK OF YOUR :A?]]
  567. ADDRULE "MY [# YOUR &STUFF] ~
  568.   [[YOUR :STUFF?] [WHY DO YOU SAY YOUR :STUFF?] ~
  569.    [DOES THAT SUGGEST ANYTHING ELSE WHICH BELONGS TO YOU?] ~
  570.    [IS IT IMPORTANT TO YOU THAT YOUR :STUFF?]]
  571. ADDRULE "MY [#] [NEWKEY]
  572. PPROP "CAN "PRIORITY 0
  573. ADDRULE "CAN [# CAN I #STUFF] ~
  574.   [[YOU BELIEVE I CAN :STUFF, DON'T YOU?] HOW ~
  575.    [YOU WANT ME TO BE ABLE TO :STUFF.] ~
  576.    [PERHAPS YOU WOULD LIKE TO BE ABLE TO :STUFF YOURSELF.]]
  577. ADDRULE "CAN [# CAN YOU #STUFF] ~
  578.   [[WHETHER OR NOT YOU CAN "STUFF DEPENDS MORE ON YOU THAN ON ME.] ~
  579.    [DO YOU WANT TO BE ABLE TO :STUFF?] ~
  580.    [PERHAPS YOU DON'T WANT TO :STUFF.] HOW]
  581. ADDRULE "CAN [#] [HOW NEWKEY]
  582. PPROP "IS "PRIORITY 0
  583. ADDRULE "IS [&A IS &B] ~
  584.   [[SUPPOSE :A WERE NOT :B.] ~
  585.    [PERHAPS :A REALLY IS :B.] [TELL ME MORE ABOUT :A.]]
  586. ADDRULE "IS [#] [NEWKEY]
  587. PPROP "WHERE "PRIORITY 0
  588. PPROP "WHERE "RULES [HOW]
  589. PPROP "HOW "PRIORITY 0
  590. ADDRULE "HOW [#] ~
  591.   [[WHY DO YOU ASK?] [DOES THAT QUESTION INTEREST YOU?] ~
  592.    [WHAT IS IT YOU REALLY WANT TO KNOW?] ~
  593.    [ARE SUCH QUESTIONS MUCH ON YOUR MIND?] ~
  594.    [WHAT ANSWER WOULD PLEASE YOU MOST?] ~
  595.    [WHAT DO YOU THINK?] ~
  596.    [WHAT COMES TO YOUR MIND WHEN YOU ASK THAT?] ~
  597.    [HAVE YOU ASKED SUCH QUESTIONS BEFORE?] ~
  598.    [HAVE YOU ASKED ANYONE ELSE?]]
  599. PPROP "BECAUSE "PRIORITY 0
  600. ADDRULE "BECAUSE [#] ~
  601.   [[IS THAT THE REAL REASON?] ~
  602.    [DON'T ANY OTHER REASONS COME TO MIND?] ~
  603.    [DOES THAT REASON SEEM TO EXPLAIN ANYTHING ELSE?] ~
  604.    [WHAT OTHER REASONS MIGHT THERE BE?] ~
  605.    [YOU'RE NOT CONCEALING ANYTHING FROM ME, ARE YOU?]]
  606. PPROP "WHY "PRIORITY 0
  607. ADDRULE "WHY [# WHY DON'T I #STUFF] ~
  608.   [[DO YOU BELIEVE I DON'T :STUFF?] ~
  609.    [PERHAPS I WILL :STUFF IN GOOD TIME.] ~
  610.    [SHOULD YOU :STUFF YOURSELF?] [YOU WANT ME TO :STUFF?] HOW]
  611. END
  612.  
  613. TO SETUP4
  614. ADDRULE "WHY [# WHY CAN'T YOU #STUFF] ~
  615.   [[DO YOU THINK YOU SHOULD BE ABLE TO :STUFF?] ~
  616.    [DO YOU WANT TO BE ABLE TO :STUFF?] ~
  617.    [DO YOU BELIEVE THIS WILL HELP YOU TO :STUFF?] ~
  618.    [HAVE YOU ANY IDEA WHY YOU CAN'T :STUFF?] HOW]
  619. ADDRULE "WHY [#] [[WHY INDEED?] [WHY "WHY"?] [WHY NOT?] HOW NEWKEY]
  620. PPROP "EVERYONE "PRIORITY 2
  621. ADDRULE "EVERYONE [# !A:IN [EVERYONE EVERYBODY NOBODY NOONE] #] ~
  622.   [[REALLY, :A?] [SURELY NOT :A.] ~
  623.    [CAN YOU THINK OF ANYONE IN PARTICULAR?] ~
  624.    [WHO, FOR EXAMPLE?] ~
  625.    [YOU ARE THINKING OF A VERY SPECIAL PERSON.] ~
  626.    [WHO, MAY I ASK?] [SOMEONE SPECIAL PERHAPS.] ~
  627.    [YOU HAVE A PARTICULAR PERSON IN MIND, DON'T YOU?] ~
  628.    [WHO DO YOU THINK YOU'RE TALKING ABOUT?] ~
  629.    [I SUSPECT YOU'RE EXAGGERATING A LITTLE.]]
  630. PPROP "EVERYBODY "PRIORITY 2
  631. PPROP "EVERYBODY "RULES [EVERYONE]
  632. PPROP "NOBODY "PRIORITY 2
  633. PPROP "NOBODY "RULES [EVERYONE]
  634. PPROP "NOONE "PRIORITY 2
  635. PPROP "NOONE "RULES [EVERYONE]
  636. PPROP "ALWAYS "PRIORITY 1
  637. ADDRULE "ALWAYS [#] ~
  638.   [[CAN YOU THINK OF A SPECIFIC EXAMPLE?] [WHEN?] ~
  639.    [WHAT INCIDENT ARE YOU THINKING OF?] [REALLY, ALWAYS?] ~
  640.    [WHAT IF THIS NEVER HAPPENED?]]
  641. PPROP "LIKE "PRIORITY 10
  642. ADDRULE "LIKE [# !:IN [AM IS ARE WAS] # LIKE #] [DIT]
  643. ADDRULE "LIKE [#] [NEWKEY]
  644. ADDRULE "DIT [#] ~
  645.    [[IN WHAT WAY?] [WHAT RESEMBLANCE DO YOU SEE?] ~
  646.    [WHAT DOES THAT SIMILARITY SUGGEST TO YOU?] ~
  647.    [WHAT OTHER CONNECTIONS DO YOU SEE?] ~
  648.    [WHAT DO YOU SUPPOSE THAT RESEMBLANCE MEANS?] ~
  649.    [WHAT IS THE CONNECTION, DO YOU SUPPOSE?] ~
  650.    [COULD THERE REALLY BE SOME CONNECTION?] HOW]
  651. PPROP "PROBLEM "PRIORITY 5
  652. ADDRULE "PROBLEM [#A !B:IN [IS ARE] YOUR !C:IN [PROBLEM PROBLEMS] #] ~
  653.   [[:A :B YOUR :C.] [ARE YOU SURE :A :B YOUR :C?] ~
  654.    [PERHAPS :A :B NOT YOUR REAL :C.] ~
  655.    [YOU THINK YOU HAVE PROBLEMS?] [DO YOU OFTEN THINK ABOUT :A?]]
  656. ADDRULE "PROBLEM [# YOUR !A:IN [PROBLEM PROBLEMS] !B:IN [IS ARE] #C] ~
  657.   [[YOUR :A :B :C?] [ARE YOU SURE YOUR :A :B :C?] ~
  658.    [PERHAPS YOUR REAL :A :B NOT :C.] [YOU THINK YOU HAVE PROBLEMS?]]
  659. ADDRULE "PROBLEM [#] ~
  660.   [[PLEASE CONTINUE, THIS MAY BE INTERESTING.] ~
  661.    [HAVE YOU ANY OTHER PROBLEMS YOU WISH TO DISCUSS?] ~
  662.    [PERHAPS YOU'D RATHER CHANGE THE SUBJECT.] ~
  663.    [YOU SEEM A BIT UNEASY.] NEWKEY]
  664. PPROP "PROBLEMS "PRIORITY 5
  665. PPROP "PROBLEMS "RULES [PROBLEM]
  666. ADDMEMR "PROBLEM [#STUFF IS YOUR PROBLEM #] ~
  667.   [[EARLIER YOU MENTIONED :STUFF.] ~
  668.    [LET'S TALK FURTHER ABOUT :STUFF.] ~
  669.    [TELL ME MORE ABOUT :STUFF.] ~
  670.    [YOU HAVEN'T MENTIONED :STUFF FOR A WHILE.]]
  671. PPROP "ASK "PRIORITY 0
  672. ADDRULE "ASK [# YOU ASK #] [HOW]
  673. ADDRULE "ASK [# YOU ! ASKING #] [HOW]
  674. ADDRULE "ASK [# I #] [YOU]
  675. ADDRULE "ASK [#] [NEWKEY]
  676. END
  677.  
  678. TO SPECIAL :PAT :SEN
  679. SET.SPECIAL PARSE.SPECIAL BF FIRST :PAT "
  680. OP RUN FPUT WORD "MATCH FIRST FIRST :PAT []
  681. END
  682.  
  683. TO TOKENIZE :TEXT
  684. IF EMPTYP :TEXT [OUTPUT []]
  685. OUTPUT SE TOKENWORD FIRST :TEXT " TOKENIZE BF :TEXT
  686. END
  687.  
  688. TO TOKENWORD :WORD :OUT
  689. IF EMPTYP :WORD [OUTPUT :OUT]
  690. IF MEMBERP FIRST :WORD [, " ] [OUTPUT TOKENWORD BF :WORD :OUT]
  691. IF MEMBERP FIRST :WORD [. ? ! |;|] [OUTPUT SE :OUT ".]
  692. OUTPUT TOKENWORD BF :WORD WORD :OUT FIRST :WORD
  693. END
  694.  
  695. TO TRANSLATE :WORD
  696. LOCAL "NEW
  697. MAKE "NEW GPROP :WORD "TRANSLATION
  698. OUTPUT IFELSE EMPTYP :NEW [:WORD] [:NEW]
  699. END
  700.  
  701. TO TRY.PRED
  702. IF LISTP :SPECIAL.PRED [OP MATCH :SPECIAL.PRED FIRST :SEN]
  703. OP RUN LIST :SPECIAL.PRED QUOTED FIRST :SEN
  704. END
  705.  
  706. TO USEMEMORY
  707. IF EMPTYP :MEMORY [LASTRESORT STOP]
  708. PRINT FIRST :MEMORY
  709. MAKE "MEMORY BF :MEMORY
  710. END
  711.  
  712.